package com.ruoyi.project.erp.goods.service;

import java.util.List;

import com.ruoyi.framework.web.domain.ZtreeString;
import com.ruoyi.project.erp.goods.domain.ErpGoods;
import com.ruoyi.framework.web.domain.Ztree;
import com.ruoyi.project.system.user.domain.User;

/**
 * 物品Service接口
 * 
 * @author qinghuan
 * @date 2021-08-08
 */
public interface IErpGoodsService 
{
    /**
     * 查询物品
     * 
     * @param goodsId 物品主键
     * @return 物品
     */
    public ErpGoods selectErpGoodsByGoodsId(String goodsId);

    /**
     * 查询物品列表
     * 
     * @param erpGoods 物品
     * @return 物品集合
     */
    public List<ErpGoods> selectErpGoodsList(ErpGoods erpGoods);

    /**
     * 新增物品
     * 
     * @param erpGoods 物品
     * @return 结果
     */
    public int insertErpGoods(ErpGoods erpGoods);

    /**
     * 修改物品
     * 
     * @param erpGoods 物品
     * @return 结果
     */
    public int updateErpGoods(ErpGoods erpGoods);

    /**
     * 批量删除物品
     * 
     * @param goodsIds 需要删除的物品主键集合
     * @return 结果
     */
    public int deleteErpGoodsByGoodsIds(String goodsIds);

    /**
     * 删除物品信息
     * 
     * @param goodsId 物品主键
     * @return 结果
     */
    public int deleteErpGoodsByGoodsId(String goodsId);

    /**
     * 查询物品树列表
     * 
     * @return 所有物品信息
     */
    public List<ZtreeString> selectErpGoodsTree();


    /**
     * 根据项目id查询顶级物品列表
     * @param projectId
     * @return
     */
    List<ErpGoods> selectParentGoodsByProjectId(Long projectId);


    /**
     * 根据项目id查询物品汇总信息
     * @param projectId
     * @return
     */
    ErpGoods selectTotalNumByProjectId(Long projectId);




    /**
     * 导入明细数据
     *
     * @param goodsList 明细列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @return 结果
     */
    public String importGoods(List<ErpGoods> goodsList, Boolean isUpdateSupport);


    /**
     * 通过项目删除物品
     * @param projectId
     * @return
     */
    int removeAllByProjectId(Long projectId);

    /**
     * 导出物品列表
     * @param erpGoods
     * @return
     */
    List<ErpGoods> exportErpGoodsList(ErpGoods erpGoods);
}
